using System;
using System.Collections.Generic;
using System.Linq;
using System.Data.SqlClient;
using System.Web;
using WCFRequerimientos.Dominio;
using System.Data;

namespace WCFRequerimientos.Persistencia
{
    public class GRMaeRequerimientoDAO
    {
        public Int32 RegistrarRequerimiento(GRMaeRequerimiento entidad, List<GRDetRequerimiento> ListEntidad)
        {
            SqlConnection con = null;
            SqlCommand cmd = null;
            SqlCommand cmd2 = null;
            SqlCommand cmd3 = null;
            SqlTransaction trx = null;
            Int32 intCodRequerimiento = 0;
            Int32 intCodMovRequerimiento = 0;
            Int32 intExito = 0;

            try
            {
                con = new SqlConnection(ConexionUtil.ObtenerCadena());
                con.Open();
                trx = con.BeginTransaction();
                cmd = new SqlCommand("GRMaeRequerimiento_Insertar", con, trx);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@iNumReq", SqlDbType.Int).Direction = ParameterDirection.Output;
                cmd.Parameters.Add("@iCodUsuReg", SqlDbType.Int).Value = entidad.iCodUsuReg;
                cmd.Parameters.Add("@dtFecReq", SqlDbType.DateTime).Value = entidad.dtFecReq;
                cmd.Parameters.Add("@vHorReq", SqlDbType.Char, 8).Value = entidad.vHorReq;
                cmd.Parameters.Add("@iCodEstReq", SqlDbType.Int).Value = entidad.iCodEstReq;
                if (entidad.vObsReq == null)
                {
                    cmd.Parameters.Add("@vObsReq", SqlDbType.Char, 500).Value = "";
                }
                else
                {
                    cmd.Parameters.Add("@vObsReq", SqlDbType.Char, 500).Value = entidad.vObsReq;
                }
                cmd.Parameters.Add("@iCodUsuA", SqlDbType.Int).Value = entidad.iCodUsuA;
                cmd.Parameters.Add("@vNomTer", SqlDbType.Char, 20).Value = entidad.vNomTer;
                cmd.ExecuteNonQuery();
                intCodRequerimiento = Convert.ToInt32(cmd.Parameters["@iNumReq"].Value);

                if (intCodRequerimiento != 0)
                {
                    try
                    {
                        cmd2 = new SqlCommand("GRMovRequerimiento_Insertar", con, trx);
                        cmd2.CommandType = CommandType.StoredProcedure;
                        cmd2.Parameters.Add("@iCorMovReq", SqlDbType.Int).Direction = ParameterDirection.Output;
                        cmd2.Parameters.Add("@iCodUOr", SqlDbType.Int).Value = 2;
                        cmd2.Parameters.Add("@iCodUsu", SqlDbType.Int).Value = entidad.iCodUsuReg;
                        cmd2.Parameters.Add("@iNumReq", SqlDbType.Char, 8).Value = intCodRequerimiento;
                        cmd2.Parameters.Add("@iCodEstReq", SqlDbType.Int).Value = entidad.iCodEstReq;
                        cmd2.Parameters.Add("@dtFecMov", SqlDbType.DateTime).Value = entidad.dtFecReq;
                        if (entidad.vObsReq == null)
                        {
                            cmd2.Parameters.Add("@vObsMov", SqlDbType.Char, 500).Value = "";
                        }
                        else
                        {
                            cmd2.Parameters.Add("@vObsMov", SqlDbType.Char, 500).Value = entidad.vObsReq;
                        }
                        cmd2.Parameters.Add("@iCodUsuA", SqlDbType.Int).Value = entidad.iCodUsuA;
                        cmd2.Parameters.Add("@vNomTer", SqlDbType.Char, 20).Value = entidad.vNomTer;
                        cmd2.ExecuteNonQuery();
                        intCodMovRequerimiento = Convert.ToInt32(cmd2.Parameters["@iCorMovReq"].Value);

                        if (intCodMovRequerimiento != 0)
                        {

                            foreach (GRDetRequerimiento objDetalle in ListEntidad)
                            {
                                cmd3 = new SqlCommand("GRDetRequerimiento_Insertar", con, trx);
                                cmd3.CommandType = CommandType.StoredProcedure;
                                cmd3.Parameters.Add("@iNumReq", SqlDbType.Int).Value = intCodRequerimiento;
                                cmd3.Parameters.Add("@iCodMat", SqlDbType.Int).Value = objDetalle.iCodMat;
                                cmd3.Parameters.Add("@nCanReq", SqlDbType.Decimal).Value = objDetalle.nCanReq;
                                cmd3.Parameters.Add("@iCodUsuA", SqlDbType.Int).Value = objDetalle.iCodUsu;
                                cmd3.Parameters.Add("@vNomTer", SqlDbType.Char, 20).Value = objDetalle.vNomTer;
                                intExito = cmd3.ExecuteNonQuery();
                                if (intExito == 0)
                                {
                                    break;
                                }
                            }
                            if (intExito != 0)
                            {
                                trx.Commit(); con.Close();
                            }
                            else
                            {
                                trx.Rollback(); con.Close();
                            }
                        }
                        else
                        {
                            trx.Rollback(); con.Close();
                        }
                    }
                    catch
                    {
                        intCodRequerimiento = -1;
                        trx.Rollback();
                    }
                }
                else
                {
                    trx.Rollback(); con.Close();
                }
            }
            catch
            {
                intCodRequerimiento = -1;
                trx.Rollback();
            }
            finally
            {
                //if (con.State == ConnectionState.Open)
                //con.Close();
            }
            return intCodRequerimiento;
        }

        public Boolean AprobarRequerimiento(GRMaeRequerimiento objMaeRequerimiento, GRMovRequerimiento objMovRequerimiento)
        {
            SqlConnection con = null;
            SqlCommand cmd = null;
            SqlCommand cmd2 = null;
            SqlTransaction trx = null;
            Boolean blExito = false;
            Int32 intCodMovRequerimiento = 0;
            Int32 intExito = 0;

            try
            {
                con = new SqlConnection(ConexionUtil.ObtenerCadena());
                con.Open();
                trx = con.BeginTransaction();
                cmd = new SqlCommand("GRMaeRequerimiento_Aprobar", con, trx);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@iNumReq", SqlDbType.Int).Value = objMaeRequerimiento.iNumReq;
                cmd.Parameters.Add("@bAprobado", SqlDbType.Bit).Value = objMaeRequerimiento.bAprobado;
                cmd.Parameters.Add("@iCodUsuApro", SqlDbType.Int).Value = objMaeRequerimiento.iCodUsuApro;
                cmd.Parameters.Add("@iCodUsuA", SqlDbType.Int).Value = objMaeRequerimiento.iCodUsuA;
                cmd.Parameters.Add("@vNomTer", SqlDbType.Char, 20).Value = objMaeRequerimiento.vNomTer;
                intExito = cmd.ExecuteNonQuery();

                if (intExito != 0)
                {

                    cmd2 = new SqlCommand("GRMovRequerimiento_Insertar", con, trx);
                    cmd2.CommandType = CommandType.StoredProcedure;
                    cmd2.Parameters.Add("@iCodUOr", SqlDbType.Int).Value = 2;
                    cmd2.Parameters.Add("@iCodUsu", SqlDbType.Int).Value = objMaeRequerimiento.iCodUsuA;
                    cmd2.Parameters.Add("@iNumReq", SqlDbType.Char, 8).Value = objMaeRequerimiento.iNumReq;
                    cmd2.Parameters.Add("@iCodEstReq", SqlDbType.Int).Value = objMovRequerimiento.iCodEstReq;
                    cmd2.Parameters.Add("@dtFecMov", SqlDbType.DateTime).Value = objMovRequerimiento.dtFecMov;
                    if (objMovRequerimiento.vObsMov == null)
                    {
                        cmd2.Parameters.Add("@vObsMov", SqlDbType.Char, 500).Value = "";
                    }
                    else
                    {
                        cmd2.Parameters.Add("@vObsMov", SqlDbType.Char, 500).Value = objMovRequerimiento.vObsMov;
                    }
                    cmd2.Parameters.Add("@iCodUsuA", SqlDbType.Int).Value = objMovRequerimiento.iCodUsuA;
                    cmd2.Parameters.Add("@vNomTer", SqlDbType.Char, 20).Value = objMovRequerimiento.vNomTer;

                    intCodMovRequerimiento = cmd2.ExecuteNonQuery();


                    if (intCodMovRequerimiento != 0)
                    {
                        trx.Commit(); con.Close();
                        blExito = true;
                    }
                    else
                    {
                        trx.Rollback(); con.Close();
                        blExito = false;
                    }
                }
                else
                {
                    blExito = false;
                    trx.Rollback(); con.Close();
                }
            }
            catch
            {
                blExito = false;
                trx.Rollback();
            }
            finally
            {
                if (con.State == ConnectionState.Open)
                    con.Close();
            }

            return blExito;
        }

        public List<GRMaeRequerimiento> ListarRequerimientos()
        {
            SqlDataReader rdr = null;
            SqlConnection con = null;
            SqlCommand cmd = null;
            List<GRMaeRequerimiento> ListaRequerimientos = null;
            GRMaeRequerimiento objRequerimiento = null;

            try
            {
                con = new SqlConnection(ConexionUtil.ObtenerCadena());
                con.Open();
                cmd = new SqlCommand("GRMaeRequerimiento_Listar", con);
                cmd.CommandType = CommandType.StoredProcedure;
                rdr = cmd.ExecuteReader();

                ListaRequerimientos = new List<GRMaeRequerimiento>();

                if (rdr.HasRows)
                {
                    while (rdr.Read())
                    {
                        objRequerimiento = new GRMaeRequerimiento();
                        objRequerimiento.iNumReq = Convert.ToInt32(rdr["iNumReq"].ToString());
                        objRequerimiento.iCodUsuReg = Convert.ToInt32(rdr["iCodUsuReg"].ToString());
                        objRequerimiento.dtFecReq = Convert.ToDateTime(rdr["dtFecReq"].ToString());
                        objRequerimiento.vHorReq = rdr["vHorReq"].ToString();
                        objRequerimiento.iCodEstReq = Convert.ToInt32(rdr["iCodEstReq"].ToString());
                        objRequerimiento.vObsReq = rdr["vObsReq"].ToString();
                        objRequerimiento.bAprobado = Convert.ToBoolean(rdr["bAprobado"].ToString());
                        objRequerimiento.iCodUsuApro = Convert.ToInt32(rdr["iCodUsuApro"].ToString());
                        objRequerimiento.dtFecApro = Convert.ToDateTime(rdr["dtFecApro"].ToString());
                        objRequerimiento.iCodUsuAte = Convert.ToInt32(rdr["iCodUsuAte"].ToString());
                        objRequerimiento.dtFecAte = Convert.ToDateTime(rdr["dtFecAte"].ToString());
                        objRequerimiento.vObsAte = rdr["vObsAte"].ToString();
                        objRequerimiento.iCodUsuA = Convert.ToInt32(rdr["iCodUsuA"].ToString());
                        objRequerimiento.vNomTer = rdr["vNomTer"].ToString();
                        objRequerimiento.dtFecAct = Convert.ToDateTime(rdr["dtFecAct"].ToString());
                        ListaRequerimientos.Add(objRequerimiento);
                    }
                }
            }
            catch
            {
                ListaRequerimientos = null;
            }
            finally
            {
                if (rdr != null)
                    rdr.Close();

                if (con.State == ConnectionState.Open)
                    con.Close();
            }
            return ListaRequerimientos;
        }

        public GRMaeRequerimiento ObtenerRequerimiento(Int32 intCodigoRequerimiento)
        {

            SqlDataReader rdr = null;
            SqlConnection con = null;
            SqlCommand cmd = null;
            GRMaeRequerimiento objRequerimiento = null;

            try
            {
                con = new SqlConnection(ConexionUtil.ObtenerCadena());
                con.Open();
                cmd = new SqlCommand("GRMaeRequerimiento_Obtener", con);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@iNumReq int", SqlDbType.Int).Value = intCodigoRequerimiento;
                rdr = cmd.ExecuteReader();
                if (rdr.HasRows)
                {
                    while (rdr.Read())
                    {
                        objRequerimiento = new GRMaeRequerimiento();
                        objRequerimiento.iNumReq = Convert.ToInt32(rdr["iNumReq"].ToString());
                        objRequerimiento.iCodUsuReg = Convert.ToInt32(rdr["iCodUsuReg"].ToString());
                        objRequerimiento.dtFecReq = Convert.ToDateTime(rdr["dtFecReq"].ToString());
                        objRequerimiento.vHorReq = rdr["vHorReq"].ToString();
                        objRequerimiento.iCodEstReq = Convert.ToInt32(rdr["iCodEstReq"].ToString());
                        objRequerimiento.vObsReq = rdr["vObsReq"].ToString();
                        objRequerimiento.bAprobado = Convert.ToBoolean(rdr["bAprobado"].ToString());
                        objRequerimiento.iCodUsuApro = Convert.ToInt32(rdr["iCodUsuApro"].ToString());
                        objRequerimiento.dtFecApro = Convert.ToDateTime(rdr["dtFecApro"].ToString());
                        objRequerimiento.iCodUsuAte = Convert.ToInt32(rdr["iCodUsuAte"].ToString());
                        objRequerimiento.dtFecAte = Convert.ToDateTime(rdr["dtFecAte"].ToString());
                        objRequerimiento.vObsAte = rdr["vObsAte"].ToString();
                        objRequerimiento.iCodUsuA = Convert.ToInt32(rdr["iCodUsuA"].ToString());
                        objRequerimiento.vNomTer = rdr["vNomTer"].ToString();
                        objRequerimiento.dtFecAct = Convert.ToDateTime(rdr["dtFecAct"].ToString());
                    }
                }
            }
            catch
            {
                objRequerimiento = null;
            }
            finally
            {
                if (rdr != null)
                    rdr.Close();

                if (con.State == ConnectionState.Open)
                    con.Close();
            }
            return objRequerimiento;
        }

        public List<GRDetRequerimiento> ObtenerDetalleRequerimiento(Int32 intCodigoRequerimiento)
        {

            SqlDataReader rdr = null;
            SqlConnection con = null;
            SqlCommand cmd = null;
            List<GRDetRequerimiento> DetalleRequerimiento = null;
            GRDetRequerimiento objDetalleRequerimiento = null;

            try
            {
                con = new SqlConnection(ConexionUtil.ObtenerCadena());
                con.Open();
                cmd = new SqlCommand("GRDetRequerimiento_Obtener", con);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@iNumReq", SqlDbType.Int).Value = intCodigoRequerimiento;
                rdr = cmd.ExecuteReader();
                if (rdr.HasRows)
                {
                    DetalleRequerimiento = new List<GRDetRequerimiento>();
                    while (rdr.Read())
                    {
                        objDetalleRequerimiento = new GRDetRequerimiento();
                        //objDetalleRequerimiento.iCodetReq = Convert.ToInt32(rdr["iCodetReq"].ToString());
                        objDetalleRequerimiento.iNumReq = Convert.ToInt32(rdr["iNumReq"].ToString());
                        objDetalleRequerimiento.iCodMat = Convert.ToInt32(rdr["iCodMat"].ToString());
                        objDetalleRequerimiento.nCanReq = Convert.ToDouble(rdr["nCanReq"].ToString());
                        objDetalleRequerimiento.iCodUsu = Convert.ToInt32(rdr["iCodUsu"].ToString());
                        objDetalleRequerimiento.vNomTer = rdr["vNomTer"].ToString();
                        objDetalleRequerimiento.dtFecAct = Convert.ToDateTime(rdr["dtFecAct"].ToString());
                        DetalleRequerimiento.Add(objDetalleRequerimiento);
                    }
                }
            }
            catch
            {
                DetalleRequerimiento = null;
            }
            finally
            {
                if (rdr != null)
                    rdr.Close();

                if (con.State == ConnectionState.Open)
                    con.Close();
            }
            return DetalleRequerimiento;
        }

        public List<GRMovRequerimiento> ObtenerMovimientoRequerimiento(Int32 intCodigoRequerimiento)
        {

            SqlDataReader rdr = null;
            SqlConnection con = null;
            SqlCommand cmd = null;
            List<GRMovRequerimiento> ListMovimientoRequerimiento = null;
            GRMovRequerimiento objMovimientoRequerimiento = null;

            try
            {
                con = new SqlConnection(ConexionUtil.ObtenerCadena());
                con.Open();
                cmd = new SqlCommand("GRMovRequerimiento_Obtener", con);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@iNumReq", SqlDbType.Int).Value = intCodigoRequerimiento;
                rdr = cmd.ExecuteReader();
                if (rdr.HasRows)
                {
                    ListMovimientoRequerimiento = new List<GRMovRequerimiento>();
                    while (rdr.Read())
                    {
                        objMovimientoRequerimiento = new GRMovRequerimiento();
                        objMovimientoRequerimiento.iCorMovReq = Convert.ToInt32(rdr["iCorMovReq"].ToString());
                        objMovimientoRequerimiento.iCodUOr = Convert.ToInt32(rdr["iCodUOr"].ToString());
                        objMovimientoRequerimiento.iCodUsu = Convert.ToInt32(rdr["iCodUsu"].ToString());
                        objMovimientoRequerimiento.iNumReq = Convert.ToInt32(rdr["iNumReq"].ToString());
                        objMovimientoRequerimiento.iCodEstReq = Convert.ToInt32(rdr["iCodEstReq"].ToString());
                        objMovimientoRequerimiento.dtFecMov = Convert.ToDateTime(rdr["dtFecMov"].ToString());
                        objMovimientoRequerimiento.vObsMov = rdr["vObsMov"].ToString();
                        objMovimientoRequerimiento.iCodUsuA = Convert.ToInt32(rdr["iCodUsuA"].ToString());
                        objMovimientoRequerimiento.vNomTer = rdr["vNomTer"].ToString();
                        objMovimientoRequerimiento.dtFecAct = Convert.ToDateTime(rdr["dtFecAct"].ToString());
                        ListMovimientoRequerimiento.Add(objMovimientoRequerimiento);
                    }
                }
            }
            catch
            {
                ListMovimientoRequerimiento = null;
            }
            finally
            {
                if (rdr != null)
                    rdr.Close();

                if (con.State == ConnectionState.Open)
                    con.Close();
            }
            return ListMovimientoRequerimiento;
        }

        public List<GRMaeRequerimiento> ConsultarRequerimientosPorAprobar(Int32 intCodigoRequerimiento, Int32 intCodigoUsuarioReg, DateTime dtFecIni, DateTime dtFecFin)
        {
            SqlDataReader rdr = null;
            SqlConnection con = null;
            SqlCommand cmd = null;
            List<GRMaeRequerimiento> ListaRequerimientos = null;
            GRMaeRequerimiento objRequerimiento = null;

            try
            {
                con = new SqlConnection(ConexionUtil.ObtenerCadena());
                con.Open();
                cmd = new SqlCommand("GRMaeRequerimientoXAprobar_Consultar", con);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@iNumReq", SqlDbType.Int).Value = intCodigoRequerimiento;
                cmd.Parameters.Add("@iCodUsuReg", SqlDbType.Int).Value = intCodigoUsuarioReg;
                cmd.Parameters.Add("@dtFecIni", SqlDbType.DateTime).Value = dtFecIni;
                cmd.Parameters.Add("@dtFecFin", SqlDbType.DateTime).Value = dtFecFin;
                rdr = cmd.ExecuteReader();

                if (rdr.HasRows)
                {
                    ListaRequerimientos = new List<GRMaeRequerimiento>();
                    while (rdr.Read())
                    {
                        objRequerimiento = new GRMaeRequerimiento();
                        objRequerimiento.iNumReq = Convert.ToInt32(rdr["iNumReq"].ToString());
                        objRequerimiento.iCodUsuReg = Convert.ToInt32(rdr["iCodUsuReg"].ToString());
                        objRequerimiento.dtFecReq = Convert.ToDateTime(rdr["dtFecReq"].ToString());
                        objRequerimiento.vHorReq = rdr["vHorReq"].ToString();
                        objRequerimiento.vNomEstReq = rdr["vNomEstReq"].ToString();
                        objRequerimiento.vObsReq = rdr["vObsReq"].ToString();
                        objRequerimiento.iCodUsuA = Convert.ToInt32(rdr["iCodUsuA"].ToString());
                        objRequerimiento.vNomTer = rdr["vNomTer"].ToString();
                        objRequerimiento.dtFecAct = Convert.ToDateTime(rdr["dtFecAct"].ToString());
                        ListaRequerimientos.Add(objRequerimiento);
                    }
                }
            }
            catch
            {
                ListaRequerimientos = null;
            }
            finally
            {
                if (rdr != null)
                    rdr.Close();

                if (con.State == ConnectionState.Open)
                    con.Close();
            }
            return ListaRequerimientos;
        }

        public Boolean AtenderRequerimiento(GRMovRequerimiento objMovRequerimiento)
        {
            SqlConnection con = null;
            SqlCommand cmd = null;
            SqlTransaction trx = null;
            Boolean blExito = false;
            Int32 intExito = 0;

            try
            {
                con = new SqlConnection(ConexionUtil.ObtenerCadena());
                con.Open();
                trx = con.BeginTransaction();
                cmd = new SqlCommand("GRMaeRequerimiento_Atender", con, trx);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@iNumReq", SqlDbType.Int).Value = objMovRequerimiento.iNumReq;
                cmd.Parameters.Add("@iCodUsuA", SqlDbType.Int).Value = objMovRequerimiento.iCodUsuA;
                cmd.Parameters.Add("@vNomTer", SqlDbType.Char, 20).Value = objMovRequerimiento.vNomTer;
                cmd.Parameters.Add("@iCodUOr", SqlDbType.Int).Value = objMovRequerimiento.iCodUOr;
                cmd.Parameters.Add("@vObsMov", SqlDbType.Char, 500).Value = objMovRequerimiento.vObsMov;
                cmd.Parameters.Add("@iCodUsu", SqlDbType.Int).Value = objMovRequerimiento.iCodUsu;
                cmd.Parameters.Add("@dtFecMov", SqlDbType.Date).Value = objMovRequerimiento.dtFecMov;

                intExito = cmd.ExecuteNonQuery();

                if (intExito != 0)
                {
                    trx.Commit();
                    blExito = true;
                }
                else
                {
                    trx.Rollback();
                    blExito = false;
                }
            }
            catch
            {
                blExito = false;
                trx.Rollback();
            }
            finally
            {
                if (con.State == ConnectionState.Open)
                    con.Close();
            }

            return blExito;
        }

        public List<GRMaeRequerimiento> ConsultarRequerimientoXCriterio(Int32 criterio, String criteriotexto)
        {

            SqlDataReader rdr = null;
            SqlConnection con = null;
            SqlCommand cmd = null;
            List<GRMaeRequerimiento> ListMovimientoRequerimiento = null;
            GRMaeRequerimiento objMaeRequermiento = null;

            try
            {
                con = new SqlConnection(ConexionUtil.ObtenerCadena());
                con.Open();
                cmd = new SqlCommand("GRMaeRequerimiento_ConsultarCriterio", con);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@criterio", SqlDbType.Int).Value = criterio;
                cmd.Parameters.Add("@criteriotext", SqlDbType.VarChar).Value = criteriotexto;
                rdr = cmd.ExecuteReader();
                if (rdr.HasRows)
                {
                    ListMovimientoRequerimiento = new List<GRMaeRequerimiento>();

                    while (rdr.Read())
                    {
                        objMaeRequermiento = new GRMaeRequerimiento();
                        objMaeRequermiento.iNumReq = int.Parse(rdr[0].ToString());
                        objMaeRequermiento.iCodUsuReg = int.Parse(rdr[1].ToString());
                        objMaeRequermiento.dtFecReq = DateTime.Parse(rdr[2].ToString());
                        objMaeRequermiento.vHorReq = rdr[3].ToString();
                        objMaeRequermiento.iCodEstReq = int.Parse(rdr[4].ToString());
                        objMaeRequermiento.vObsReq = rdr[5].ToString();
                        objMaeRequermiento.vObsAte = rdr[11].ToString();
                        objMaeRequermiento.iCodUsuA = int.Parse(rdr[12].ToString());
                        objMaeRequermiento.vNomTer = rdr[13].ToString();
                        objMaeRequermiento.dtFecAct = DateTime.Parse(rdr[14].ToString());
                        ListMovimientoRequerimiento.Add(objMaeRequermiento);
                    }
                }
            }
            catch
            {
                ListMovimientoRequerimiento = null;
            }
            finally
            {
                if (rdr != null)
                    rdr.Close();

                if (con.State == ConnectionState.Open)
                    con.Close();
            }
            return ListMovimientoRequerimiento;

        }
    }
}